package com.itheima.d7_tcp4;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/*
   目标：完成TCP通信快速入门-服务端开发：实现1发1收。
 */
public class Server {
    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动...");
        // 1、创建ServerSocket的对象，同时为服务端注册端口。
        final ServerSocket ss = new ServerSocket(9099);

        // 创建线程池
        final ThreadPoolExecutor pool = new ThreadPoolExecutor(
                10,
                10,
                60,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(10),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );

        while (true) {
            // 2、使用serverSocket对象，调用一个accept方法，等待客户端的连接请求
            final Socket accept = ss.accept();

            // 使用线程池
            pool.execute(new SocketMultiTask(accept));
        }

//            // 3、从socket通信管道中得到一个字节输入流。
//            final InputStream is = accept.getInputStream();
//
//            // 4、把原始的字节输入流包装成高效的输入流
//            final BufferedReader br = new BufferedReader(new InputStreamReader(is));
//
//            // 5、使用数据输入流读取客户端发送过来的消息
//            final String result = br.readLine();
//            System.out.println(result);
//
//            br.close();
//            is.close();
        // 6、释放资源
//        br.close();
//        is.close();
//        ss.close();
    }
}













